home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / 3DTOSHI2.ZIP / mpgfx / include / gfximage.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-03-23  |  4.4 KB  |  196 lines

  1.  
  2. // gfximage.h
  3. //
  4. // Copyright (c) 1995 by Toshiaki Tsuji, all rights reserved.
  5.  
  6. #ifndef __GFXIMAGE_H__
  7. #define __GFXIMAGE_H__
  8.  
  9. #include "stdgfx.h"
  10. #include "gfxerror.h"
  11.  
  12. // Image Format
  13. #define IMAGE_8BIT     1
  14. #define IMAGE_16BIT    2
  15. #define IMAGE_24BIT    3
  16.  
  17. // Orientation
  18. #define IMAGE_TOPDOWN  1
  19. #define IMAGE_BOTTOMUP 2
  20.  
  21. // Direction 
  22. #define ROW_DOWN  1
  23. #define ROW_UP    2
  24.  
  25. // Transparent
  26. #define NOTRANSPARENT  -1
  27.  
  28. #if defined (__FORWINDOWS__)
  29. #elif defined (__FOROS2__)
  30.   #define BI_NONE 0
  31.   #define BI_RGB  0
  32.   #define BI_RLE4 2
  33.   #define BI_RLE8 1
  34.   #define HBITMAP HANDLE
  35.  
  36.   struct RGBQUAD
  37.     {
  38.       BYTE rgbBlue;
  39.       BYTE rgbGreen;
  40.       BYTE rgbRed;
  41.       BYTE rgbReserved;
  42.     }; // End of RGBQUAD
  43.  
  44. #elif defined (__FORDOS__)
  45.   #define BI_NONE 0
  46.   #define BI_RGB  0
  47.   #define BI_RLE4 2
  48.   #define BI_RLE8 1
  49.   #define HBITMAP HANDLE
  50.  
  51.   struct BITMAPINFOHEADER
  52.     {
  53.       DWORD biSize;
  54.       LONG  biWidth;
  55.       LONG  biHeight;
  56.       WORD  biPlanes;
  57.       WORD  biBitCount;
  58.       DWORD biCompression;
  59.       DWORD biSizeImage;
  60.       LONG  biXPelsPerMeter;
  61.       LONG  biYPelsPerMeter;
  62.       DWORD biClrUsed;
  63.       DWORD biClrImportant;
  64.     }; // End of BITMAPINFOHEADER
  65.  
  66.   struct RGBQUAD
  67.     {
  68.       BYTE rgbBlue;
  69.       BYTE rgbGreen;
  70.       BYTE rgbRed;
  71.       BYTE rgbReserved;
  72.     }; // End of RGBQUAD
  73.  
  74.   struct BITMAPINFO
  75.     {
  76.       BITMAPINFOHEADER bmiHeader;
  77.       RGBQUAD bmiColors[1];
  78.     }; // End of BITMAPINFO
  79.       
  80.   struct BITMAPFILEHEADER
  81.     {
  82.       USHORT bfType;
  83.       DWORD  bfSize;
  84.       USHORT bfReserved1;
  85.       USHORT bfReserved2;
  86.       DWORD  bfOffBits;
  87.     }; // End of BITMAPFILEHEADER
  88.  
  89. #elif defined (__FORUNIX__)
  90.   #define BI_NONE 0
  91.   #define BI_RGB  0
  92.   #define BI_RLE4 2
  93.   #define BI_RLE8 1
  94.   #define HBITMAP HANDLE
  95.  
  96.   struct BITMAPINFOHEADER
  97.     {
  98.       DWORD biSize;
  99.       LONG  biWidth;
  100.       LONG  biHeight;
  101.       WORD  biPlanes;
  102.       WORD  biBitCount;
  103.       DWORD biCompression;
  104.       DWORD biSizeImage;
  105.       LONG  biXPelsPerMeter;
  106.       LONG  biYPelsPerMeter;
  107.       DWORD biClrUsed;
  108.       DWORD biClrImportant;
  109.     }; // End of BITMAPINFOHEADER
  110.  
  111.   struct RGBQUAD
  112.     {
  113.       BYTE rgbBlue;
  114.       BYTE rgbGreen;
  115.       BYTE rgbRed;
  116.       BYTE rgbReserved;
  117.     }; // End of RGBQUAD
  118.  
  119.   struct BITMAPINFO
  120.     {
  121.       BITMAPINFOHEADER bmiHeader;
  122.       RGBQUAD bmiColors[1];
  123.     }; // End of BITMAPINFO
  124.       
  125.   struct BITMAPFILEHEADER
  126.     {
  127.       USHORT bfType;
  128.       DWORD  bfSize;
  129.       USHORT bfReserved1;
  130.       USHORT bfReserved2;
  131.       DWORD  bfOffBits;
  132.     }; // End of BITMAPFILEHEADER
  133. #endif
  134.  
  135. class IMAGE : public MYOBJECT
  136.   {
  137.     protected :
  138.       BYTE *Buffer;
  139.       LONG Offset;
  140.       LONG Width;
  141.       LONG Height;
  142.       LONG BytesPerRow;      
  143.       LONG BytesPerPixel;
  144.       LONG RowInc;
  145.       LONG Format;
  146.       LONG Bits;
  147.       LONG Direction;
  148.       RECTANGLE ViewPort;
  149.       BOOLEAN ForDebug;
  150.       
  151.       // For Windows CreateDIBSection
  152.       HMEMDISPLAY hMemDisplay;
  153.       HBITMAP DIBSection;
  154.       HBITMAP OldBitmap;
  155.       BOOLEAN Attached;
  156.  
  157.     public :
  158.       LONG Transparent;
  159.  
  160.       IMAGE ();
  161.       IMAGE ( LONG Direction );
  162.       virtual ~IMAGE ();
  163.  
  164.       virtual BOOLEAN Create ( LONG Format, LONG Wd, LONG Ht );
  165.       virtual BOOLEAN Create ( HDISPLAY hDisplay, LONG Format, LONG Wd, LONG Ht );
  166.       virtual VOID Destroy ();
  167.       
  168.       virtual BYTE *SetOffset ( LONG x, LONG y );
  169.       virtual BYTE *GetNextRow ( LONG Direction );
  170.       virtual LONG GetRowInc () { return RowInc; };
  171.  
  172.       virtual VOID Clear ( LONG Color );
  173.       virtual BOOLEAN IsCreated ();
  174.  
  175.       BOOLEAN IsAttached () { return Attached; };
  176.       HMEMDISPLAY GetMemDisplay () { return hMemDisplay; };
  177.       
  178.       VOID SetViewPort ( LONG x1, LONG y1, LONG x2, LONG y2 );
  179.       RECTANGLE GetViewPort () { return ViewPort; };
  180.  
  181.       BYTE *GetBuffer () { return Buffer; };
  182.       BYTE *GetOffset () { return Buffer+Offset; };
  183.       LONG GetWidth () { return Width; };
  184.       LONG GetBytesPerRow () { return BytesPerRow; };
  185.       LONG GetBytesPerPixel () { return BytesPerPixel; };
  186.       LONG GetHeight () { return Height; };
  187.       LONG GetBits () { return Bits; };
  188.       LONG GetFormat () { return Format; };
  189.       LONG GetDirection () { return Direction; };
  190.  
  191.       VOID SetDebugFlag ( BOOLEAN IsForDebug );
  192.   }; // End of IMAGE Class
  193.  
  194. #endif
  195.  
  196.